<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>H5+css3基础 | 茂茂个人博客</title>
    <meta name="generator" content="VuePress 1.7.1">
    <link rel="icon" href="https://pan.zealsay.com/blog/favicon.ico">
    <script>
          var _hmt = _hmt || [];
          (function() {
            var hm = document.createElement("script");
            hm.src = "https://hm.baidu.com/hm.js?b0aae218897fa9d8a9f76e9a77e0b3c6";
            var s = document.getElementsByTagName("script")[0]; 
            s.parentNode.insertBefore(hm, s);
          })();
        </script>
    <meta name="description" content="开心最重要呀">
    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
    
    <link rel="preload" href="/blog/assets/css/0.styles.ed123d92.css" as="style"><link rel="preload" href="/blog/assets/js/app.e4cba77b.js" as="script"><link rel="preload" href="/blog/assets/js/5.1ad0ff24.js" as="script"><link rel="preload" href="/blog/assets/js/1.fe4eac58.js" as="script"><link rel="preload" href="/blog/assets/js/22.b6b97b5b.js" as="script"><link rel="prefetch" href="/blog/assets/js/10.58980e71.js"><link rel="prefetch" href="/blog/assets/js/11.461ee1ab.js"><link rel="prefetch" href="/blog/assets/js/12.de9aade4.js"><link rel="prefetch" href="/blog/assets/js/13.c1f7abfc.js"><link rel="prefetch" href="/blog/assets/js/14.eeee4da5.js"><link rel="prefetch" href="/blog/assets/js/15.225a74ee.js"><link rel="prefetch" href="/blog/assets/js/16.3eef12b1.js"><link rel="prefetch" href="/blog/assets/js/17.a97bd7c7.js"><link rel="prefetch" href="/blog/assets/js/18.461a74bd.js"><link rel="prefetch" href="/blog/assets/js/19.7b390d19.js"><link rel="prefetch" href="/blog/assets/js/20.8638de7c.js"><link rel="prefetch" href="/blog/assets/js/21.8b1e5c62.js"><link rel="prefetch" href="/blog/assets/js/23.c3e9364b.js"><link rel="prefetch" href="/blog/assets/js/24.daa0ce9e.js"><link rel="prefetch" href="/blog/assets/js/25.0c44cdb2.js"><link rel="prefetch" href="/blog/assets/js/26.ed604668.js"><link rel="prefetch" href="/blog/assets/js/27.0c4acdea.js"><link rel="prefetch" href="/blog/assets/js/28.4f896280.js"><link rel="prefetch" href="/blog/assets/js/29.50e69b67.js"><link rel="prefetch" href="/blog/assets/js/3.90606e56.js"><link rel="prefetch" href="/blog/assets/js/30.5c69a6a2.js"><link rel="prefetch" href="/blog/assets/js/31.8a40c25d.js"><link rel="prefetch" href="/blog/assets/js/32.7a1f46ed.js"><link rel="prefetch" href="/blog/assets/js/33.a48429b4.js"><link rel="prefetch" href="/blog/assets/js/34.8f224bd0.js"><link rel="prefetch" href="/blog/assets/js/35.bc552eb5.js"><link rel="prefetch" href="/blog/assets/js/36.7e0cc0d9.js"><link rel="prefetch" href="/blog/assets/js/37.2bb21bfb.js"><link rel="prefetch" href="/blog/assets/js/38.f77b014f.js"><link rel="prefetch" href="/blog/assets/js/39.8a5ba8b0.js"><link rel="prefetch" href="/blog/assets/js/4.89c80be7.js"><link rel="prefetch" href="/blog/assets/js/40.c600c684.js"><link rel="prefetch" href="/blog/assets/js/41.0dbac397.js"><link rel="prefetch" href="/blog/assets/js/42.f1035a7b.js"><link rel="prefetch" href="/blog/assets/js/43.ace95e0e.js"><link rel="prefetch" href="/blog/assets/js/44.0ff283b9.js"><link rel="prefetch" href="/blog/assets/js/45.836151e7.js"><link rel="prefetch" href="/blog/assets/js/46.033824d7.js"><link rel="prefetch" href="/blog/assets/js/47.499ce120.js"><link rel="prefetch" href="/blog/assets/js/48.39c2db90.js"><link rel="prefetch" href="/blog/assets/js/49.ca266dff.js"><link rel="prefetch" href="/blog/assets/js/50.c12ee57e.js"><link rel="prefetch" href="/blog/assets/js/51.4c3c8a1c.js"><link rel="prefetch" href="/blog/assets/js/52.c11bc4a4.js"><link rel="prefetch" href="/blog/assets/js/53.d4dc4ec7.js"><link rel="prefetch" href="/blog/assets/js/54.300dd272.js"><link rel="prefetch" href="/blog/assets/js/55.6e86af02.js"><link rel="prefetch" href="/blog/assets/js/56.d91a04d8.js"><link rel="prefetch" href="/blog/assets/js/6.4f77b856.js"><link rel="prefetch" href="/blog/assets/js/7.db9a864b.js"><link rel="prefetch" href="/blog/assets/js/8.bf0cca83.js"><link rel="prefetch" href="/blog/assets/js/9.84ddd18e.js">
    <link rel="stylesheet" href="/blog/assets/css/0.styles.ed123d92.css">
  </head>
  <body>
    <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar" data-v-0c5314fc><div data-v-0c5314fc><div id="loader-wrapper" class="loading-wrapper" data-v-d48f4d20 data-v-0c5314fc data-v-0c5314fc><div class="loader-main" data-v-d48f4d20><div data-v-d48f4d20></div><div data-v-d48f4d20></div><div data-v-d48f4d20></div><div data-v-d48f4d20></div></div> <!----> <!----></div> <div class="password-shadow password-wrapper-out" style="display:none;" data-v-5cb9a64e data-v-0c5314fc data-v-0c5314fc><h3 class="title" style="display:none;" data-v-5cb9a64e data-v-5cb9a64e>茂茂个人博客</h3> <!----> <label id="box" class="inputBox" style="display:none;" data-v-5cb9a64e data-v-5cb9a64e><input type="password" value="" data-v-5cb9a64e> <span data-v-5cb9a64e>Konck! Knock!</span> <button data-v-5cb9a64e>OK</button></label> <div class="footer" style="display:none;" data-v-5cb9a64e data-v-5cb9a64e><span data-v-5cb9a64e><i class="iconfont reco-theme" data-v-5cb9a64e></i> <a target="blank" href="https://vuepress-theme-reco.recoluan.com" data-v-5cb9a64e>vuePress-theme-reco</a></span> <span data-v-5cb9a64e><i class="iconfont reco-copyright" data-v-5cb9a64e></i> <a data-v-5cb9a64e><span data-v-5cb9a64e>茂茂</span>
            
          <span data-v-5cb9a64e>2019 - </span>
          2023
        </a></span></div></div> <div class="hide" data-v-0c5314fc><div data-v-0c5314fc><div id="smart" class="wrapper-page" style="background-image:url(/blog/articleImage/img11.jpeg);background-position-x:center;background-position-y:center;background-size:cover;background-repeat-x:no-repeat;background-repeat-y:no-repeat;" data-v-0c5314fc><header class="navbar" data-v-0c5314fc><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/blog/" class="home-link router-link-active"><img src="/blog/logo.png" alt="茂茂个人博客" class="logo"> <span class="site-name">茂茂个人博客</span></a> <div class="links"><div id="dayNightSwitch" class="generalWrapper" data-v-32f44868><a class="click" data-v-32f44868><div class="onOff daySwitch" data-v-32f44868><div class="star star1" data-v-32f44868></div> <div class="star star2" data-v-32f44868></div> <div class="star star3" data-v-32f44868></div> <div class="star star4" data-v-32f44868></div> <div class="star star5" data-v-32f44868></div> <div class="star sky" data-v-32f44868></div> <div class="sunMoon" data-v-32f44868><div class="crater crater1" data-v-32f44868></div> <div class="crater crater2" data-v-32f44868></div> <div class="crater crater3" data-v-32f44868></div> <div class="cloud part1" data-v-32f44868></div> <div class="cloud part2" data-v-32f44868></div></div></div></a></div> <div class="search-box"><i class="iconfont reco-search"></i> <input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/blog/" class="nav-link"><i class="iconfont reco-home"></i>
  主页
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-category"></i>
      博客
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog/categories/工具与阅读/" class="nav-link"><i class="iconfont undefined"></i>
  工具与阅读
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/vue/" class="nav-link"><i class="iconfont undefined"></i>
  vue
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/前端/" class="nav-link"><i class="iconfont undefined"></i>
  前端
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/后端/" class="nav-link"><i class="iconfont undefined"></i>
  后端
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/node/" class="nav-link"><i class="iconfont undefined"></i>
  node
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/IOS/" class="nav-link"><i class="iconfont undefined"></i>
  IOS
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/WebGIS/" class="nav-link"><i class="iconfont undefined"></i>
  WebGIS
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/React/" class="nav-link"><i class="iconfont undefined"></i>
  React
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/面试/" class="nav-link"><i class="iconfont undefined"></i>
  面试
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/Angular/" class="nav-link"><i class="iconfont undefined"></i>
  Angular
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/数据结构与算法/" class="nav-link"><i class="iconfont undefined"></i>
  数据结构与算法
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/微前端架构/" class="nav-link"><i class="iconfont undefined"></i>
  微前端架构
</a></li></ul></div></div><div class="nav-item"><a href="/blog/tag/" class="nav-link"><i class="iconfont reco-tag"></i>
  标签
</a></div><div class="nav-item"><a href="/blog/timeline/" class="nav-link"><i class="iconfont reco-date"></i>
  时间轴
</a></div><div class="nav-item"><a href="/blog/about/" class="nav-link"><i class="iconfont reco-account"></i>
  关于
</a></div> <!----></nav></div></header> <div class="sidebar-mask" data-v-0c5314fc></div> <aside class="sidebar" data-v-0c5314fc><div class="personal-info-wrapper" data-v-03833281 data-v-0c5314fc><img src="/blog/logo.png" alt="author-avatar" class="personal-img" data-v-03833281> <h3 class="name" data-v-03833281>
    茂茂
  </h3> <div class="num" data-v-03833281><div data-v-03833281><h3 data-v-03833281>43</h3> <h6 data-v-03833281>文章</h6></div> <div data-v-03833281><h3 data-v-03833281>30</h3> <h6 data-v-03833281>标签</h6></div></div> <hr data-v-03833281></div> <nav class="nav-links"><div class="nav-item"><a href="/blog/" class="nav-link"><i class="iconfont reco-home"></i>
  主页
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-category"></i>
      博客
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/blog/categories/工具与阅读/" class="nav-link"><i class="iconfont undefined"></i>
  工具与阅读
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/vue/" class="nav-link"><i class="iconfont undefined"></i>
  vue
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/前端/" class="nav-link"><i class="iconfont undefined"></i>
  前端
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/后端/" class="nav-link"><i class="iconfont undefined"></i>
  后端
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/node/" class="nav-link"><i class="iconfont undefined"></i>
  node
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/IOS/" class="nav-link"><i class="iconfont undefined"></i>
  IOS
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/WebGIS/" class="nav-link"><i class="iconfont undefined"></i>
  WebGIS
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/React/" class="nav-link"><i class="iconfont undefined"></i>
  React
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/面试/" class="nav-link"><i class="iconfont undefined"></i>
  面试
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/Angular/" class="nav-link"><i class="iconfont undefined"></i>
  Angular
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/数据结构与算法/" class="nav-link"><i class="iconfont undefined"></i>
  数据结构与算法
</a></li><li class="dropdown-item"><!----> <a href="/blog/categories/微前端架构/" class="nav-link"><i class="iconfont undefined"></i>
  微前端架构
</a></li></ul></div></div><div class="nav-item"><a href="/blog/tag/" class="nav-link"><i class="iconfont reco-tag"></i>
  标签
</a></div><div class="nav-item"><a href="/blog/timeline/" class="nav-link"><i class="iconfont reco-date"></i>
  时间轴
</a></div><div class="nav-item"><a href="/blog/about/" class="nav-link"><i class="iconfont reco-account"></i>
  关于
</a></div> <!----></nav> <!----> </aside> <div class="password-shadow password-wrapper-in" style="display:none;" data-v-5cb9a64e data-v-0c5314fc><h3 class="title" style="display:none;" data-v-5cb9a64e data-v-5cb9a64e>H5+css3基础</h3> <!----> <label id="box" class="inputBox" style="display:none;" data-v-5cb9a64e data-v-5cb9a64e><input type="password" value="" data-v-5cb9a64e> <span data-v-5cb9a64e>Konck! Knock!</span> <button data-v-5cb9a64e>OK</button></label> <div class="footer" style="display:none;" data-v-5cb9a64e data-v-5cb9a64e><span data-v-5cb9a64e><i class="iconfont reco-theme" data-v-5cb9a64e></i> <a target="blank" href="https://vuepress-theme-reco.recoluan.com" data-v-5cb9a64e>vuePress-theme-reco</a></span> <span data-v-5cb9a64e><i class="iconfont reco-copyright" data-v-5cb9a64e></i> <a data-v-5cb9a64e><span data-v-5cb9a64e>茂茂</span>
            
          <span data-v-5cb9a64e>2019 - </span>
          2023
        </a></span></div></div></div> <div data-v-0c5314fc><main class="page" style="padding-right:0;"><div class="page-title" style="display:none;"><h1 class="title">H5+css3基础</h1> <div class="page-info" data-v-0efa1f05><i class="iconfont reco-account" data-v-0efa1f05><span data-v-0efa1f05>茂茂</span></i> <i class="iconfont reco-date" data-v-0efa1f05><span data-v-0efa1f05>2019-12-21</span></i> <i class="iconfont reco-eye" data-v-0efa1f05><span id="/blog/blogs/tec/2019/092101.html" data-flag-title="Your Article Title" class="leancloud-visitors" data-v-0efa1f05><a class="leancloud-visitors-count" style="font-size:.9rem;font-weight:normal;color:#999;"></a></span></i> <i class="iconfont reco-tag tags" data-v-0efa1f05><span class="tag-item" data-v-0efa1f05>html</span><span class="tag-item" data-v-0efa1f05>css</span></i></div></div> <div class="theme-reco-content content__default" style="display:none;"><h2 id="h5-css3"><a href="#h5-css3" class="header-anchor">#</a> H5+css3</h2> <h3 id="html5和html的区别"><a href="#html5和html的区别" class="header-anchor">#</a> html5和html的区别</h3> <ol><li>html5新增了语义化标签：footer 、nav、section…</li> <li>html5完全支持css3</li> <li>支持本地离线存储</li> <li>新增了canvas标签</li> <li>新增视频和音频标签
HTML5离线存储</li></ol> <p>localStorage 长期存储数据，浏览器关闭后数据不丢失；
sessionStorage 数据在浏览器关闭后自动删除。</p> <h3 id="对语义化标签的理解"><a href="#对语义化标签的理解" class="header-anchor">#</a> 对语义化标签的理解</h3> <ol><li><p>去掉或者丢失样式的时候能够让页面呈现出清晰的结构</p></li> <li><p>有利于SEO：和搜索引擎建立良好沟通，有助于爬虫抓取更多的有效信息：爬虫依赖于标签来确定上下文和各个关键字的权重；</p></li> <li><p>方便其他设备解析（如屏幕阅读器、盲人阅读器、移动设备）以意义的方式来渲染网页；</p></li> <li><p>便于团队开发和维护，语义化更具可读性，遵循W3C标准的团队都遵循这个标准，可以减少差异化。</p></li></ol> <h3 id="浏览器的内核"><a href="#浏览器的内核" class="header-anchor">#</a> 浏览器的内核</h3> <p>IE浏览器的内核Trident、Mozilla的Gecko、Chrome的Blink（WebKit的分支）、Opera内核原为Presto，现为Blink；</p> <p>浏览器内核的理解</p> <p>渲染引擎：负责取得网页的内容（HTML、XML、图像等等）、整理讯息（例如加入CSS等），以及计算网页的显示方式，然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同，所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。</p> <p>JS引擎则：解析和执行javascript来实现网页的动态效果。</p> <h3 id="前端页面有哪三层构成-分别是什么-作用是什么"><a href="#前端页面有哪三层构成-分别是什么-作用是什么" class="header-anchor">#</a> 前端页面有哪三层构成，分别是什么？作用是什么</h3> <ol><li><p>结构层：由 HTML 或 XHTML 之类的标记语言负责创建，仅负责语义的表达。解决了页面“内容是什么”的问题。</p></li> <li><p>表示层：由CSS负责创建，解决了页面“如何显示内容”的问题。</p></li> <li><p>行为层：由脚本负责。解决了页面上“内容应该如何对事件作出反应”的问题。</p></li></ol> <h3 id="doctype作用-严格模式与混杂模式如何区分-它们有何意义"><a href="#doctype作用-严格模式与混杂模式如何区分-它们有何意义" class="header-anchor">#</a> Doctype作用? 严格模式与混杂模式如何区分？它们有何意义?</h3> <p>声明位于文档中的最前面，处于 标签之前。告知浏览器以何种模式来渲染文档。
严格模式的排版和 JS 运作模式是，以该浏览器支持的最高标准运行。</p> <p>在混杂模式中，页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作。</p> <p>DOCTYPE不存在或格式不正确会导致文档以混杂模式呈现。</p> <h3 id="你知道多少种doctype文档类型"><a href="#你知道多少种doctype文档类型" class="header-anchor">#</a> 你知道多少种Doctype文档类型</h3> <p>标签可声明三种 DTD 类型，分别表示严格版本、过渡版本以及基于框架的 HTML 文档。</p> <h3 id="html与xhtml-二者有什么区别"><a href="#html与xhtml-二者有什么区别" class="header-anchor">#</a> HTML与XHTML——二者有什么区别</h3> <ol><li><p>XHTML 元素必须被正确地嵌套。</p></li> <li><p>XHTML 元素必须被关闭。</p></li> <li><p>标签名必须用小写字母。</p></li> <li><p>XHTML 文档必须拥有根元素。</p></li></ol> <h3 id="输入完网址按下回车-到看到网页这个过程中发生了什么"><a href="#输入完网址按下回车-到看到网页这个过程中发生了什么" class="header-anchor">#</a> 输入完网址按下回车，到看到网页这个过程中发生了什么</h3> <ol><li><p>域名解析</p></li> <li><p>发起TCP的3次握手</p></li> <li><p>建立TCP连接后发起http请求</p></li> <li><p>服务器端响应http请求，浏览器得到html代码</p></li> <li><p>浏览器解析html代码，并请求html代码中的资源</p></li> <li><p>浏览器对页面进行渲染呈现给用户</p></li></ol> <h3 id="网站重构的理解"><a href="#网站重构的理解" class="header-anchor">#</a> 网站重构的理解</h3> <p>重构：在不改变外部行为的前提下，简化结构、添加可读性，而在网站前端保持一致的行为。</p> <ol><li><p>使网站前端兼容于现代浏览器(针对于不合规范的CSS、如对IE6有效的)</p></li> <li><p>对于移动平台的优化，针对于SEO进行优化</p></li> <li><p>减少代码间的耦合，让代码保持弹性</p></li> <li><p>压缩或合并JS、CSS、image等前端资源</p></li></ol> <h3 id="优化大图-多图-显示-提高用户体验"><a href="#优化大图-多图-显示-提高用户体验" class="header-anchor">#</a> 优化大图（多图）显示，提高用户体验</h3> <ol><li><p>图片懒加载，滚动到相应位置才加载图片。</p></li> <li><p>图片预加载，如果为幻灯片、相册等，将当前展示图片的前一张和后一张优先下载。</p></li> <li><p>使用CSSsprite，SVGsprite，Iconfont、Base64等技术，如果图片为css图片的话。</p></li> <li><p>如果图片过大，可以使用特殊编码的图片，加载时会先加载一张压缩的特别厉害的缩略图，以提高用户体验。</p></li></ol> <h3 id="iframe的优缺点"><a href="#iframe的优缺点" class="header-anchor">#</a> iframe的优缺点</h3> <p>优点：</p> <ol><li><p>解决加载缓慢的第三方内容如图标和广告等的加载问题</p></li> <li><p>iframe无刷新文件上传</p></li> <li><p>iframe跨域通信</p></li></ol> <p>缺点：</p> <ol><li><p>iframe会阻塞主页面的Onload事件</p></li> <li><p>无法被一些搜索引擎索引到</p></li> <li><p>页面会增加服务器的http请求</p></li> <li><p>会产生很多页面，不容易管理。</p></li></ol> <h3 id="请阐述table的缺点"><a href="#请阐述table的缺点" class="header-anchor">#</a> 请阐述table的缺点</h3> <ol><li><p>太深的嵌套，比如table&gt;tr&gt;td&gt;h3，会导致搜索引擎读取困难，而且，最直接的损失就是大大增加了冗余代码量。</p></li> <li><p>灵活性差，比如要将tr设置border等属性，是不行的，得通过td</p></li> <li><p>代码臃肿，当在table中套用table的时候，阅读代码会显得异常混乱</p></li> <li><p>混乱的colspan与rowspan，用来布局时，频繁使用他们会造成整个文档顺序混乱。</p></li> <li><p>table需要多次计算才能确定好其在渲染树中节点的属性，通常要花3倍于同等元素的时间。</p></li> <li><p>不够语义</p></li></ol> <h3 id="行内元素和块级元素有哪些"><a href="#行内元素和块级元素有哪些" class="header-anchor">#</a> 行内元素和块级元素有哪些</h3> <p>行内元素：a b br i span input select strong</p> <p>块级元素：div p h1—h6 from ul ol li</p> <h3 id="行内元素和块级元素的区别"><a href="#行内元素和块级元素的区别" class="header-anchor">#</a> 行内元素和块级元素的区别</h3> <p>行内元素：会在水平方向排列，不能包含块级元素，设置width无效，height无效(可以设置line-height)，margin上下无效，padding上下无效。</p> <p>块级元素：各占据一行，垂直方向排列。从新行开始结束接着一个断行。</p> <h3 id="清除浮动的方式"><a href="#清除浮动的方式" class="header-anchor">#</a> 清除浮动的方式</h3> <p>（1）父级div定义height。</p> <p>（2）结尾处加空div标签clear:both。</p> <p>（3）父级div定义伪类:after和zoom。</p> <p>（4）父级div定义overflow:hidden。</p> <p>（5）父级div定义overflow:auto。</p> <p>（6）父级div也浮动，需要定义宽度。</p> <p>（7）父级div定义display:table。</p> <p>（8）结尾处加br标签clear:both。</p> <h3 id="引入css样式的方式"><a href="#引入css样式的方式" class="header-anchor">#</a> 引入css样式的方式</h3> <ol><li><p>行内式：直接在style属性中设定css样式</p></li> <li><p>嵌入式：写在标签里</p></li> <li><p>导入式：</p></li> <li><p>链接式：</p></li></ol> <h3 id="link和-import有什么区别"><a href="#link和-import有什么区别" class="header-anchor">#</a> link和@import有什么区别</h3> <p>（1）link属于XHTML标签，除了加载CSS外，还能用于定义RSS, 定义rel连接属性等作用；而@import是CSS提供的，只能用于加载CSS;</p> <p>（2）页面被加载的时，link会同时被加载，而@import引用的CSS会等到页面被加载完再加载;</p> <p>（3）import是CSS2.1 提出的，只在IE5以上才能被识别，而link是XHTML标签，无兼容问题。</p> <h3 id="css的三大特性"><a href="#css的三大特性" class="header-anchor">#</a> css的三大特性</h3> <ol><li>继承性</li></ol> <p>css中可继承的样式：</p> <p>Font-size font-family color text-indent</p> <p>不可继承的样式：</p> <p>border padding margin width height ;</p> <ol start="2"><li><p>成叠性</p></li> <li><p>优先级</p></li></ol> <ul><li>优先级就近原则，同权重情况下样式定义最近者为准;</li> <li>载入样式以最后载入的定位为准;</li></ul> <p>优先级为:
同权重: 内联样式表（标签内部）&gt; 嵌入样式表（当前文件中）&gt; 外部样式表（外部文件中）。
!important &gt;  id &gt; class &gt; tag
important 比 内联优先级高</p> <h3 id="css的选择符"><a href="#css的选择符" class="header-anchor">#</a> css的选择符</h3> <ol><li><p>标签选择器</p></li> <li><p>ID选择器</p></li> <li><p>类选择器</p></li> <li><p>相邻选择器</p></li> <li><p>子选择器</p></li> <li><p>后代选择器</p></li> <li><p>通配符选择器</p></li> <li><p>属性选择器</p></li> <li><p>伪类选择器</p></li></ol> <h3 id="标签上title与alt属性的区别"><a href="#标签上title与alt属性的区别" class="header-anchor">#</a> 标签上title与alt属性的区别</h3> <p>title：为该属性提供信息</p> <p>alt：当图片不显示时，用文字代替</p> <h3 id="src-与-href-的区别"><a href="#src-与-href-的区别" class="header-anchor">#</a> src 与 href 的区别</h3> <p>src 用于替换当前元素，href 用于在当前文档和引用资源之间确立联系。</p> <p>src 是 source 的缩写，指向外部资源的位置，指向的内容将会嵌入到文档中当前标签所在位置；在请求 src 资源时会将其指向的资源下载并应用到文档内，例如 js 脚本，img 图片和 frame 等元素。</p> <h3 id="让文字在垂直和水平方向上重叠的两个属性"><a href="#让文字在垂直和水平方向上重叠的两个属性" class="header-anchor">#</a> 让文字在垂直和水平方向上重叠的两个属性</h3> <p>垂直方向：line-height</p> <p>水平方向：letter-spacing</p> <p>关于 letter-spacing 的妙用知道有哪些么？</p> <p>答案:可以用于消除 inline-block 元素间的换行符空格间隙问题。</p> <h3 id="display-none-与-visibility-hidden-的区别"><a href="#display-none-与-visibility-hidden-的区别" class="header-anchor">#</a> display:none 与 visibility:hidden 的区别</h3> <p>display : 隐藏对应的元素但不挤占该元素原来的空间。</p> <p>visibility: 隐藏对应的元素并且挤占该元素原来的空间。</p> <h3 id="css的盒子模型-低版本ie的盒子模型有什么不同"><a href="#css的盒子模型-低版本ie的盒子模型有什么不同" class="header-anchor">#</a> CSS的盒子模型？低版本IE的盒子模型有什么不同</h3> <p>（1）有两种， IE 盒子模型、W3C 盒子模型；
（2）盒模型： 内容(content)、填充(padding)、边界(margin)、 边框(border)；
（3）区  别： IE的content部分把 border 和 padding计算了进去;</p> <h3 id="bfc-是什么-block-formatting-context"><a href="#bfc-是什么-block-formatting-context" class="header-anchor">#</a> BFC 是什么?（Block Formatting Context）</h3> <p>BFC（块级格式化上下文），一个创建了新的 BFC 的盒子是独立布局的，盒子内元素的布局不会影响盒子外面的元素。</p> <p>在同一个 BFC 中的两个相邻的盒子在垂直方向发生 margin 重叠的问题</p> <p>BFC 是指浏览器中创建了一个独立的渲染区域，该区域内所有元素的布局不会影响到区域外元素的布局，这个渲染区域只对块级元素起作用</p> <h3 id="css3新特性"><a href="#css3新特性" class="header-anchor">#</a> CSS3新特性</h3> <p>CSS3实现圆角（border-radius），阴影（box-shadow），</p> <p>对文字加特效（text-shadow、），线性渐变（gradient），旋转（transform）</p> <p>transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);// 旋转,缩放,定位,倾斜</p> <p>增加了更多的CSS选择器 多背景 rgba</p> <p>在CSS3中唯一引入的伪元素是 ::selection.</p> <p>媒体查询，多栏布局</p> <p>border-image</p> <h3 id="display的值"><a href="#display的值" class="header-anchor">#</a> display的值</h3> <p>block 块类型。默认宽度为父元素宽度，可设置宽高，换行显示。</p> <p>none 缺省值。象行内元素类型一样显示。</p> <p>inline 行内元素类型。默认宽度为内容宽度，不可设置宽高，同行显示。</p> <p>inline-block 默认宽度为内容宽度，可以设置宽高，同行显示。</p> <p>list-item 象块类型元素一样显示，并添加样式列表标记。</p> <p>table 此元素会作为块级表格来显示。</p> <p>inherit 规定应该从父元素继承display 属性的值。</p> <h3 id="position-的值"><a href="#position-的值" class="header-anchor">#</a> position 的值</h3> <p>absolute：生成绝对定位的元素，相对于 static 定位以外的第一个父元素进行定位。</p> <p>fixed： （老 IE 不支持） 生成绝对定位的元素，相对于浏览器窗口进行定位。</p> <p>relative ：生成相对定位的元素，相对于其正常位置进行定位。</p> <p>static ：默认值。没有定位，元素出现在正常的流中</p> <ul><li><p>（忽略 top, bottom, left, right z-index 声明）。</p></li> <li><p>inherit 规定从父元素继承 position 属性的值。</p></li></ul> <h3 id="浏览器标准模式和怪异模式"><a href="#浏览器标准模式和怪异模式" class="header-anchor">#</a> 浏览器标准模式和怪异模式</h3> <p>1）在严格模式中 ：width是内容宽度 ，元素真正的宽度 = margin-left + border-left-width + padding-left + width + padding-right + border-right- width + margin-right;</p> <p>在怪癖模式中 ：width则是元素的实际宽度 ，内容宽度 = width - ( padding-left + padding-right + border-left-width + border-right-width)</p> <p>2）可以设置行内元素的高宽</p> <p>在Standards模式下，给span等行内元素设置wdith和height都不会生效，而在quirks模式下，则会生效。</p> <p>3）可设置百分比的高度</p> <p>在standards模式下，一个元素的高度是由其包含的内容来决定的，如果父元素没有设置高度，子元素设置一个百分比的高度是无效的。</p> <p>4）用margin:0 auto设置水平居中在IE下会失效</p> <p>使用margin:0 auto在standards模式下可以使元素水平居中，但在quirks模式下却会失效,quirk模式下的解决办法，用text-align属性:</p> <p>body{text-align:center};#content{text-align:left}</p> <p>5）quirk模式下设置图片的padding会失效</p> <p>6）quirk模式下Table中的字体属性不能继承上层的设置</p> <p>7）quirk模式下white-space:pre会失效</p> <p>8）盒模型解释不同</p> <h3 id="一次-js-请求一般情况下有哪些地方会有缓存处理"><a href="#一次-js-请求一般情况下有哪些地方会有缓存处理" class="header-anchor">#</a> 一次 js 请求一般情况下有哪些地方会有缓存处理</h3> <p>dns 缓存，cdn 缓存，浏览器缓存，服务器缓存。</p> <h3 id="为什么利用多个域名来存储网站资源会更有效"><a href="#为什么利用多个域名来存储网站资源会更有效" class="header-anchor">#</a> 为什么利用多个域名来存储网站资源会更有效</h3> <p>CDN 缓存更方便 突破浏览器并发限制</p> <p>节约 cookie 带宽</p> <p>节约主域名的连接数，优化页面响应速度</p> <p>防止不必要的安全问题</p> <h3 id="伪类和伪元素"><a href="#伪类和伪元素" class="header-anchor">#</a> 伪类和伪元素</h3> <p>CSS伪类：用于向某些选择器添加特殊的效果。</p> <p>CSS伪元素：用于将特殊的效果添加到某些选择器。</p> <p>伪类</p> <table><thead><tr><th>代码</th> <th>说明</th></tr></thead> <tbody><tr><td>:hover</td> <td>将样式添加到鼠标悬浮的元素</td></tr> <tr><td>:active</td> <td>将样式添加到被激活的元素</td></tr> <tr><td>:focus</td> <td>将样式添加到获得焦点的元素</td></tr> <tr><td>:link</td> <td>将样式添加到未被访问过的链接</td></tr></tbody></table> <p>伪元素</p> <table><thead><tr><th>代码</th> <th>说明</th></tr></thead> <tbody><tr><td>p:first-of-type</td> <td>选择属于其父元素的首个元素的每个元素</td></tr> <tr><td>p:last-of-type</td> <td>选择属于其父元素的最后元素的每个元素</td></tr> <tr><td>p:only-of-type</td> <td>选择属于其父元素唯一的元素的每个元素。</td></tr> <tr><td>p:only-child</td> <td>选择属于其父元素唯一的子元素的每个元素。</td></tr></tbody></table> <h3 id="html5布局的方式"><a href="#html5布局的方式" class="header-anchor">#</a> html5布局的方式</h3> <p>1.浮动</p> <p>2.定位</p> <p>3.分栏布局</p> <p>4.弹性布局</p> <p>5.响应式布局</p> <h3 id="弹性布局的优点"><a href="#弹性布局的优点" class="header-anchor">#</a> 弹性布局的优点</h3> <p>1 适应性强，在做不同屏幕分辨率的界面时非常实用</p> <p>2 可以随意按照宽度、比例划分元素的宽高</p> <p>3 可以轻松改变元素的显示顺序</p> <p>4 弹性布局实现快捷，易维护</p> <h3 id="content-box和border-box-为什么看起来content-box更合理-但还是经常使用border-box"><a href="#content-box和border-box-为什么看起来content-box更合理-但还是经常使用border-box" class="header-anchor">#</a> content-box和border-box，为什么看起来content-box更合理，但还是经常使用border-box</h3> <p>content-box是W3C的标准盒模型 元素宽度+padding+border</p> <p>border-box 是ie的怪异盒模型，他的元素宽度等于内容宽度 内容宽度包含了padding和border</p> <p>比如有时候在元素基础上添加内边距padding或border会将布局撑破 但是使用border-box就可以轻松完成</p> <h3 id="实现三个div等分排在一行-考察border-box"><a href="#实现三个div等分排在一行-考察border-box" class="header-anchor">#</a> 实现三个DIV等分排在一行（考察border-box)</h3> <p>1.设置border-box width 33.33%</p> <p>2.flexbox flex:1</p> <h3 id="怎么实现一个div左上角到右下角的移动"><a href="#怎么实现一个div左上角到右下角的移动" class="header-anchor">#</a> 怎么实现一个DIV左上角到右下角的移动</h3> <p>改变left值为window宽度-div宽度 top值为window高度=div高度</p> <p>jquery的animate方法</p> <p>css3的transition</p> <h3 id="rem-和-em的区别"><a href="#rem-和-em的区别" class="header-anchor">#</a> rem 和 em的区别</h3> <p>em相对于父元素，rem相对于根元素</p> <h3 id="渐进增强和优雅降级"><a href="#渐进增强和优雅降级" class="header-anchor">#</a> 渐进增强和优雅降级</h3> <p>渐进增强 ：针对低版本浏览器进行构建页面，保证最基本的功能，然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。</p> <p>优雅降级 ：一开始就构建完整的功能，然后再针对低版本浏览器进行兼容。</p> <h3 id="http和https"><a href="#http和https" class="header-anchor">#</a> HTTP和HTTPS</h3> <p>HTTP协议通常承载于TCP协议之上，在HTTP和TCP之间添加一个安全协议层（SSL或TSL），这个时候，就成了我们常说的HTTPS。</p> <p>默认HTTP的端口号为80，HTTPS的端口号为443。</p> <h3 id="为什么https安全"><a href="#为什么https安全" class="header-anchor">#</a> 为什么HTTPS安全</h3> <p>因为网络请求需要中间有很多的服务器路由器的转发。中间的节点都可能篡改信息，而如果使用HTTPS，
密钥在你和终点站才有。https之所以比http安全，是因为他利用ssl/tls协议传输。它包含证书，卸载，
流量转发，负载均衡，页面适配，浏览器适配，refer传递等。保障了传输过程的安全性</p> <h3 id="性能优化问题"><a href="#性能优化问题" class="header-anchor">#</a> 性能优化问题</h3> <p>代码层面：避免使用css表达式，避免使用高级选择器，通配选择器。</p> <p>缓存利用：缓存Ajax，使用CDN，使用外部js和css文件以便缓存，添加Expires头，服务端配置Etag，减少DNS查找等</p> <p>请求数量：合并样式和脚本，使用css图片精灵，初始首屏之外的图片资源按需加载，静态资源延迟加载。</p> <p>请求带宽：压缩文件，开启GZIP，</p> <h3 id="减少页面加载时间"><a href="#减少页面加载时间" class="header-anchor">#</a> 减少页面加载时间</h3> <ol><li>优化图片</li> <li>图像格式的选择</li> <li>优化CSS</li> <li>网址后加斜杠</li> <li>标明高度和宽度</li> <li>减少http请求（合并文件，合并图片）。</li></ol> <h3 id="什么是fouc-你如何来避免fouc"><a href="#什么是fouc-你如何来避免fouc" class="header-anchor">#</a> 什么是FOUC？你如何来避免FOUC</h3> <p>由于css引入使用了@import 或者存在多个style标签以及css文件在页面底部引入使得css文件加载在html之后导致页面闪烁、花屏</p> <p>用link加载css文件，放在head标签里面</p> <h3 id="代码层面的优化"><a href="#代码层面的优化" class="header-anchor">#</a> 代码层面的优化</h3> <p>用hash-table来优化查找</p> <p>少用全局变量</p> <p>用innerHTML代替DOM操作，减少DOM操作次数，优化javascript性能</p> <p>用setTimeout来避免页面失去响应</p> <p>缓存DOM节点查找的结果</p> <p>避免使用CSS Expression</p> <p>避免全局查询</p> <p>避免使用with(with会创建自己的作用域，会增加作用域链长度)</p> <p>多个变量声明合并</p> <p>避免图片和iFrame等的空Src。空Src会重新加载当前页面，影响速度和效率</p> <p>尽量避免写在HTML标签中写Style属性</p> <h3 id="移动端性能优化"><a href="#移动端性能优化" class="header-anchor">#</a> 移动端性能优化</h3> <p>尽量使用css3动画，开启硬件加速。</p> <p>适当使用touch事件代替click事件。</p> <p>避免使用css3渐变阴影效果。</p> <p>可以用transform: translateZ(0)来开启硬件加速。</p> <p>不滥用Float。Float在渲染时计算量比较大，尽量减少使用</p> <p>不滥用Web字体。Web字体需要下载，解析，重绘当前页面，尽量减少使用。</p> <p>合理使用requestAnimationFrame动画代替setTimeout</p> <p>CSS中的属性（CSS3 transitions、CSS3 3D transforms、Opacity、Canvas、WebGL、Video）会触发GPU渲染，请合理使用。过渡使用会引发手机过耗电增加</p> <p>PC端的在移动端同样适用</p></div> <footer class="page-edit" style="display:none;"><!----> <div class="last-updated"><span class="prefix">Last Updated: </span> <span class="time">2022/1/5 下午4:20:07</span></div></footer> <!----> <!----> <!----></main> <!----></div></div></div></div></div><div class="global-ui"><div class="back-to-ceiling" style="right:1rem;bottom:6rem;width:2.5rem;height:2.5rem;border-radius:.25rem;line-height:2.5rem;display:none;" data-v-c6073ba8 data-v-c6073ba8><svg t="1574745035067" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5404" class="icon" data-v-c6073ba8><path d="M526.60727968 10.90185116a27.675 27.675 0 0 0-29.21455937 0c-131.36607665 82.28402758-218.69155461 228.01873535-218.69155402 394.07834331a462.20625001 462.20625001 0 0 0 5.36959153 69.94390903c1.00431239 6.55289093-0.34802892 13.13561351-3.76865779 18.80351572-32.63518765 54.11355614-51.75690182 118.55860487-51.7569018 187.94566865a371.06718723 371.06718723 0 0 0 11.50484808 91.98906777c6.53300375 25.50556257 41.68394495 28.14064038 52.69160883 4.22606766 17.37162448-37.73630017 42.14135425-72.50938081 72.80769204-103.21549295 2.18761121 3.04276886 4.15646224 6.24463696 6.40373557 9.22774369a1871.4375 1871.4375 0 0 0 140.04691725 5.34970492 1866.36093723 1866.36093723 0 0 0 140.04691723-5.34970492c2.24727335-2.98310674 4.21612437-6.18497483 6.3937923-9.2178004 30.66633723 30.70611158 55.4360664 65.4791928 72.80769147 103.21549355 11.00766384 23.91457269 46.15860503 21.27949489 52.69160879-4.22606768a371.15156223 371.15156223 0 0 0 11.514792-91.99901164c0-69.36717486-19.13165746-133.82216804-51.75690182-187.92578088-3.42062944-5.66790279-4.76302748-12.26056868-3.76865837-18.80351632a462.20625001 462.20625001 0 0 0 5.36959269-69.943909c-0.00994388-166.08943902-87.32547796-311.81420293-218.6915546-394.09823051zM605.93803103 357.87693858a93.93749974 93.93749974 0 1 1-187.89594924 6.1e-7 93.93749974 93.93749974 0 0 1 187.89594924-6.1e-7z" p-id="5405" data-v-c6073ba8></path><path d="M429.50777625 765.63860547C429.50777625 803.39355007 466.44236686 1000.39046097 512.00932183 1000.39046097c45.56695499 0 82.4922232-197.00623328 82.5015456-234.7518555 0-37.75494459-36.9345906-68.35043303-82.4922232-68.34111062-45.57627738-0.00932239-82.52019037 30.59548842-82.51086798 68.34111062z" p-id="5406" data-v-c6073ba8></path></svg></div><div class="kanbanniang" data-v-5775ee02><div class="banniang-container" style="display:;" data-v-5775ee02><div class="messageBox" style="right:68px;bottom:190px;display:none;" data-v-5775ee02>
      我是王茂铭谢谢你的关注 
    </div> <div class="operation" style="right:90px;bottom:40px;display:;" data-v-5775ee02><i class="kbnfont kbn-ban-home ban-home" data-v-5775ee02></i> <i class="kbnfont kbn-ban-message message" data-v-5775ee02></i> <i class="kbnfont kbn-ban-close close" data-v-5775ee02></i> <a target="_blank" href="https://vuepress-theme-reco.recoluan.com/views/plugins/kanbanniang.html" data-v-5775ee02><i class="kbnfont kbn-ban-info info" data-v-5775ee02></i></a> <i class="kbnfont kbn-ban-theme skin" style="display:;" data-v-5775ee02></i></div> <canvas id="banniang" width="240" height="352" class="live2d" style="right:90px;bottom:-20px;opacity:0.9;" data-v-5775ee02></canvas></div> <div class="showBanNiang" style="display:none;" data-v-5775ee02>
    看板娘
  </div></div><canvas id="vuepress-canvas-cursor"></canvas><APlayer audio="" fixed="true" mini="true" autoplay="autoplay" theme="#b7daff" loop="loop" order="random" preload="auto" volume="0.2" mutex="true" lrc-type="1" list-max-height="250" storage-name="vuepress-plugin-meting" id="aplayer-fixed"></APlayer></div></div>
    <script src="/blog/assets/js/app.e4cba77b.js" defer></script><script src="/blog/assets/js/5.1ad0ff24.js" defer></script><script src="/blog/assets/js/1.fe4eac58.js" defer></script><script src="/blog/assets/js/22.b6b97b5b.js" defer></script>
  </body>
</html>
